package serveur;



import java.awt.*;


import javax.swing.*;
import javax.swing.table.*;

import commun.CliServFrame;


public class ChaineServeurFrame extends CliServFrame
{	private static final long serialVersionUID = 2005L;

	private JPanel ptable;
	/** le tableur  */
	private JTable table;
	/** le contenu du tableur  */
	private String tablevoie [][];
	/** entete des colonnes */
	private String tablecol[]= {"","adresse", "joueur"};
	/** les lignes du tableur   */
	private String tablelig [] ;
	/**  boîte d'édition multilignes pour les sorties */
	private JTextArea	sortie;
	/** container pour des barres de défilement de la boîte d'édition multilignes*/
	private JScrollPane panneauSortie;
	/** police de la boîte d'édition multilignes  */
	private Font police;	

	public ChaineServeurFrame (String titre)
	{	super (titre); 
		// ne pas changer évite les erreurs de port occupé   
		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);		
		

		setBackground(Color.lightGray);	//couleur du fond en gris clair
		setLayout (new BorderLayout(10,10));	//mise en page de la fenêtre
		
		tablevoie = new String [32][3];
		for (int i = 0; i<32; i++) 
		{	tablelig  = new String []{""+i, "","",""}; 
			tablevoie [i]= tablelig;
		}
		table = new JTable (tablevoie,tablecol);
		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
		
		for (int i = 0; i<3; i++) 
		{	TableColumn col = table.getColumnModel().getColumn(i);
			switch (i)
			{	case 0 : col.setPreferredWidth (20);break;
				case 1 : col.setPreferredWidth (120);break;
				case 2 : col.setPreferredWidth (60);break;
				

			}			
		}

		ptable  = new JPanel();
		ptable.setLayout(new BorderLayout());
		ptable.add(table.getTableHeader(), BorderLayout.NORTH);
		ptable.add(table, BorderLayout.CENTER);
		add(ptable, BorderLayout.EAST );		
		initFen(); 
		pack();
		setVisible(true);
    }
    
    /**
     * affichage adresse 
     * @param ident identificateur du client et indice ligne dans table 
     * @param ad adresse du client  
     */
	public void afficheAdresse(int ident, String ad)
	{	if (ad==null)ad=""; table.setValueAt (ad, ident, 1);
	}
    /**
     * affichage joueur
     * @param ident identificateur du client et indice ligne dans table 
     * @param num numéro joueur
     */
	public void afficheNumJoueur(int ident, String num)
	{	if (num==null)num=""; table.setValueAt (num, ident, 2);
	}
	
	
	/**
	 * fenêtre pour afficher des résultats
	 */
	public void initFen()
	{	//création de la boîte d'édition ( nblig lignes  et nbcol colonnes visibles)
			this.sortie = new JTextArea(20,40); 
			this.sortie.setLineWrap(true);						// pour passage à la ligne automatique
			this.sortie.setWrapStyleWord(true);					// sans couper les mots
			this.police = new Font ("Arial", Font.PLAIN, 18);
			this.sortie.setFont(this.police);

			// barre de défilement verticale pour le texte
			this.panneauSortie = new JScrollPane(this.sortie); 	//création du panneau pour la boîte d'édition
			this.panneauSortie.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
			// on ajoute ensuite le panneau "ascenseur" au panneau de premier niveau  en bas
			add(this.panneauSortie,BorderLayout.CENTER);
			
		}

		
		/**
		 * affichage du texte  dans la zone de résultats à la suite et passage à la ligne suivante
		 *	@param str chaîne à afficher 
		 */	
	  	public void ajoutSortieLigne (String str)
		{	this.sortie.append (str+"\n");		
			this.sortie.setCaretPosition(this.sortie.getDocument().getLength()); 
		}
}